/*
* vuex的核心管理对象模块 : store
* */
import Vue from "vue";
import Vuex from 'vuex'

Vue.use(Vuex)


/*状态*/
const state = {/*初始化状态*/
  count:0
}
/*包含多个更新state函数的对象*/
const mutations = {
/*增加的mutation*/
  increment(state) {
    state.count++
  },
  /*减少的mutation*/
  decrement(state) {
    state.count--
  }
}
/*对应事件回调函数的对象*/
const actions = {
/*增加的action*/
  increment({commit}){
    /*提交增加的mutation*/
    commit('increment')
  },
  decrement({commit}) {
    commit('decrement')
  },
  incrementIfOdd({commit,state}){
    if(state.count%2===1){
      commit('increment')
    }
  },
  /*异步的action*/
  incrementAsync({commit}){
    /*在action中直接就可以执行异步代码*/
    setTimeout(()=>{
      commit('increment')
    },1000)
  }
}
/*包含多个getter计算属性函数的对象*/
const getters = { /*不需要亲自调用*/
  theEvenOrOdd(state){
    return state.count%2 === 0 ? '偶数' : '奇数';
  }
}

export default new Vuex.Store({
  state,/*状态*/
  mutations,/*包含多个更新state函数的对象*/
  actions,/*对应事件回调函数的对象*/
  getters /*包含多个getter计算属性函数的对象*/
})
